home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr11 / pdox693.zip / TI1216.ASC < prev    next >
Text File  |  1993-01-06  |  15KB  |  463 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.   PRODUCT  :  Paradox                               NUMBER  :  1216
  9.   VERSION  :  4.0
  10.        OS  :  DOS
  11.      DATE  :  January 6, 1993                          PAGE  :  1/7
  12.  
  13.      TITLE :  Understanding and Optimizing Memory in Paradox 4.0
  14.  
  15.  
  16.  
  17.  
  18.   The purpose of this Technical Information Sheet is to develop an
  19.   understanding of how Paradox uses memory and to acquaint the
  20.   reader with the tools available for optimizing memory in Paradox
  21.   4.0.
  22.  
  23.  
  24.   Memory requirements and recommendations:
  25.  
  26.   Paradox can use extended memory for all memory needs and expanded
  27.   memory as a swap area for data.  Paradox 4.0 requires two
  28.   megabytes of memory to run consistently, however a minimum of
  29.   four megabytes is recommended for better performance.  Paradox
  30.   can use up to a maximum of 16 megabytes.  The error messages
  31.   "Insufficient Stack Space" and "DPMI Initialization Error" can
  32.   mean there is too little memory available for Paradox to load.
  33.   In these cases, sometimes merely reconfiguring how system memory
  34.   is used can bypass this problem, otherwise eliminating programs
  35.   and drivers that are competing with Paradox for memory resources
  36.   and/or adding more memory to the system are indicated.  See the
  37.   section below on the Paradox Memory Environment for further
  38.   discussion of competing programs and drivers.  The minimum XMS
  39.   requirement for Paradox 4.0 to load is 384 K.  The amount of XMS
  40.   available can be determined with the MEM command in DOS.
  41.  
  42.   Systems with more than 16 megabytes of extended RAM must limit
  43.   Paradox to 16 megabytes with the DOS setting "SET DPMIMEM=MAXMEM
  44.   16384" or the "-extk 16384" Paradox command line switch.  The
  45.   DPMIMEM setting tells the Paradox DPMI Server to allow Paradox
  46.   access to only the specified amount of extended memory.
  47.  
  48.  
  49.   Memory differences between versions 3.5 and 4.0:
  50.  
  51.   Several changes were made in the way Paradox 4.0 utilizes memory.
  52.   Paradox 3.5 runs in protected or real mode.  Version 4.0 runs
  53.   only in protected mode.  Paradox 4.0 is the first version of
  54.   Paradox to use the DPMI (DOS Protected Mode Interface) memory
  55.   standard.  Using the DPMI standard allows Paradox 4.0 to run in
  56.   protected mode in Microsoft Windows Enhanced mode, thereby
  57.   enabling PXACCESS and SQL Link in that environment.  DPMI
  58.   compliance allows Paradox 4.0 to use extended memory above 640 K
  59.   in Microsoft Windows Enhanced Mode and under OS/2, which can
  60.   greatly improve performance.
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.   PRODUCT  :  Paradox                               NUMBER  :  1216
  75.   VERSION  :  4.0
  76.        OS  :  DOS
  77.      DATE  :  January 6, 1993                          PAGE  :  2/7
  78.  
  79.      TITLE :  Understanding and Optimizing Memory in Paradox 4.0
  80.  
  81.  
  82.  
  83.  
  84.   Paradox 4.0 internally allocates available memory differently
  85.   than previous versions.  The data cache is now an object cache,
  86.   which stores forms, reports, and validity files, thus saving disk
  87.   reads when these objects are called repeatedly in a Paradox
  88.   session.  Data is no longer stored in the cache.
  89.  
  90.   Data caching is now provided in the larger Table Buffer area.  In
  91.   Paradox 3.5 the default table buffer is around 100 K.
  92.  
  93.   Paradox 4.0 allocates up to 70% of available memory to the table
  94.   buffer which can mean several megabytes allocated on systems with
  95.   four or more megabytes of extended memory.
  96.  
  97.  
  98.   How Paradox loads in memory:
  99.  
  100.   An explanation of Paradox loading procedure might be helpful in
  101.   understanding the optimization techniques discussed later.  The
  102.   diagram below and discussion on the following pages describe
  103.   where and in what order Paradox loads its various components into
  104.   memory.
  105.  
  106.  
  107.             ┌───────────────────────┐ 16 MB Limit
  108.             │      Code Pool        │
  109.             │      200-1200 K       │
  110.             ├───────────────────────┤
  111.             │       "Heap"          │
  112.             ├───────────────────────┤
  113.             │    Protected-Mode     │
  114.             │    Resident Block     │
  115.             ╞═══════════════════════╡ 1024 K
  116.             │    (Upper Memory)     │
  117.             ╞═══════════════════════╡ 640 K
  118.             │     "Real Heap"       │
  119.             ├───────────────────────┤
  120.             │  Real Resident Block  │
  121.             ├───────────────────────┤
  122.             └───────────────────────┘
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.   PRODUCT  :  Paradox                               NUMBER  :  1216
  141.   VERSION  :  4.0
  142.        OS  :  DOS
  143.      DATE  :  January 6, 1993                          PAGE  :  3/7
  144.  
  145.      TITLE :  Understanding and Optimizing Memory in Paradox 4.0
  146.  
  147.  
  148.  
  149.  
  150.   Overview of memory areas
  151.  
  152.             The Protected Mode Resident Block:  This houses fixed
  153.             size program and data segments along with some DPMI
  154.             server code.  What is loaded here must remain
  155.             throughout the Paradox session.  It is usually 300 K to
  156.             350 K in size and is not adjustable by the user.
  157.  
  158.             The Paradox Code Pool:  Here, overlay code segments are
  159.             loaded.  500 K is considered to be the optimum minimum
  160.             in 4.0, depending on the amount of RAM available while
  161.             1200 K is the maximum.  The Code Pool is adjustable
  162.             with the -codepool xxxx command line switch.
  163.  
  164.             Real Mode Resident Blocks:  Here some DPMI server code
  165.             is loaded along with some Paradox code segments needed
  166.             for real mode operation.  What is loaded here must stay
  167.             in memory for the duration of the Paradox session.
  168.  
  169.             The "Heap":  All remaining available extended memory
  170.             and real memory combined is referred to as the Heap.
  171.             The Heap is in turn allocated to Table Buffer and
  172.             Central Memory Pool as listed below.
  173.  
  174.             The Table Buffer:   The Table Buffer is adjustable
  175.             directly with the -tablek xxxx command line switch.
  176.             It holds current data records and memo fields during
  177.             viewing, editing, querying and reporting on tables.
  178.             Roughly 70% of the Heap is allocated here.
  179.  
  180.             The Central Memory Pool (CMP):  The Central Memory Pool
  181.             is adjustable inversely with the -tablek xxxx command
  182.             line switch.  It holds PAL variables, scripts, images,
  183.             and active forms and reports.  Roughly 30% of the Heap
  184.             is allocated here.
  185.  
  186.  
  187.   Tools for optimizing memory:
  188.  
  189.   Among the tools for optimizing memory in Paradox 4.0 are various
  190.   command line arguments.  They are listed on the following pages
  191.   along with their functions, syntax and applications toward memory
  192.   optimization.
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.   PRODUCT  :  Paradox                               NUMBER  :  1216
  207.   VERSION  :  4.0
  208.        OS  :  DOS
  209.      DATE  :  January 6, 1993                          PAGE  :  4/7
  210.  
  211.      TITLE :  Understanding and Optimizing Memory in Paradox 4.0
  212.  
  213.  
  214.  
  215.  
  216.   -space:      This argument causes Paradox to message several
  217.                memory allocation figures on the status line upon
  218.                starting the program.  These figures are useful for
  219.                gaining an understanding of how Paradox is
  220.                internally allocating memory and for monitoring
  221.                changes made to those allocations.
  222.  
  223.                      Paradox -space
  224.  
  225.                ktot -  the total amount of RAM available to Paradox
  226.                        for operations after the Paradox code itself
  227.                        has loaded.  This figure can be used to
  228.                        indicate whether or not the expected amount
  229.                        of memory on the system is indeed being
  230.                        recognized by and is accessible to Paradox.
  231.  
  232.                kswap - the amount of RAM allocated to the table
  233.                        buffer and therefore available for data
  234.                        caching.  This is an important figure
  235.                        because it is allocated a large portion of
  236.                        available memory by default.  It is
  237.                        adjustable with the -tablek switch below.
  238.  
  239.                kgetm - the amount of memory allocated to the
  240.                        Central Memory Pool (CMP).  This memory is
  241.                        used for caching scripts, procedures,
  242.                        arrays, and variables.  Kgetm is adjusted
  243.                        higher by setting the -tablek switch lower.
  244.  
  245.                kpool - the amount of memory allocated to the code
  246.                        pool.  This is the RAM that caches Paradox
  247.                        code.  It may be necessary to set this
  248.                        parameter with the -codepool switch to be a
  249.                        minimum of 500 up to a maximum of 1200.
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.   PRODUCT  :  Paradox                               NUMBER  :  1216
  273.   VERSION  :  4.0
  274.        OS  :  DOS
  275.      DATE  :  January 6, 1993                          PAGE  :  5/7
  276.  
  277.      TITLE :  Understanding and Optimizing Memory in Paradox 4.0
  278.  
  279.  
  280.  
  281.  
  282.   -tablek:     This argument sets the amount of RAM to go to the
  283.                table buffer and is reflected by kswap above.  The
  284.                syntax is "-tablek xxxx", xxxx being an amount of
  285.                RAM expressed kilobytes.  For example:
  286.  
  287.                      Paradox -tablek 2048
  288.  
  289.                Sets table buffers at 2 megabytes.  Setting this
  290.                parameter higher allows for a larger data cache but
  291.                at the same time limits the Central Memory Pool.
  292.                This setting should be set higher in cases where the
  293.                majority of the memory needs are data related, and
  294.                lower if the on systems that are going to be scripts
  295.                and procedure intensive.
  296.  
  297.   -codepool:   This argument sets the amount of RAM that is
  298.                allocated to the codepool and is reflected in kpool
  299.                above.  The syntax is "-codepool xxxx", xxxx being
  300.                an amount of RAM expressed in kilobytes.  The
  301.                command
  302.  
  303.                      Paradox -codepool 1100
  304.  
  305.                sets the code pool at 1100 kilobytes.  The higher
  306.                the setting, the more Paradox code will be in memory
  307.                at one time, having a beneficial effect on
  308.                performance.  The minimum recommended setting is
  309.                500 K and the maximum Paradox will allocate is
  310.                1200 K.
  311.  
  312.   -extk:       This argument limits Paradox to a given amount of
  313.                extended RAM.  The syntax is "-extk xxxx", xxxx
  314.                being an amount of RAM expressed in kilobytes.  This
  315.                switch is useful in situations where it is not
  316.                desirable for Paradox to take control of all
  317.                available extended memory, under Microsoft Windows
  318.                for example.  It is also used to limit Paradox from
  319.                attempting to control more than 16 megabytes of RAM,
  320.                as in:
  321.  
  322.                      Paradox -extk 16384
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.   PRODUCT  :  Paradox                               NUMBER  :  1216
  339.   VERSION  :  4.0
  340.        OS  :  DOS
  341.      DATE  :  January 6, 1993                          PAGE  :  6/7
  342.  
  343.      TITLE :  Understanding and Optimizing Memory in Paradox 4.0
  344.  
  345.  
  346.  
  347.  
  348.   -emk:        This argument limits Paradox to a given amount of
  349.                expanded RAM.
  350.  
  351.                      Paradox -emk 0
  352.  
  353.                keeps Paradox from using any expanded RAM during the
  354.                session.  This can be useful for avoiding conflicts
  355.                in upper memory between Paradox and other programs
  356.                or drivers.
  357.  
  358.   -cachek:     This argument limits the amount of RAM available to
  359.                the Paradox internal object cache.  The cache will
  360.                be sized dynamically if this switch is not used.
  361.  
  362.   -stack:      This argument allocates the amount of memory
  363.                allocated to the internal procedure stack, which
  364.                keeps track of currently active PAL procedures in
  365.                memory.  The syntax is -stack xx, xx being an amount
  366.                of RAM up to 64 kilobytes.
  367.  
  368.   -norealheap: This argument tells Paradox not to incorporate any
  369.                leftover real memory into the heap after it has
  370.                loaded.  (See the diagram on page 2).  This is to
  371.                allow or other programs to run concurrently that
  372.                need real memory to get started.  If Quattro Pro
  373.                can't load from PXACCESS it could be lacking real
  374.                memory at startup.  In this case, the -norealheap
  375.                switch could be the remedy.
  376.  
  377.  
  378.   The Paradox Memory Environment
  379.  
  380.   Disk Caches and RAM Drives:   The environment in which Paradox is
  381.   running is also important to Paradox memory optimization.  Disk
  382.   caching programs can be very useful for avoiding excessive disk
  383.   access.  But, because these programs take a portion of memory
  384.   "off the top", they can, in modest memory situations (systems
  385.   with less than four megabytes of extended RAM), severely impede
  386.   Paradox performance or possibly prevent Paradox from loading at
  387.   all due to lack of memory.  If Paradox seems slow or has problems
  388.   starting or running out of memory, check to see if a disk cache
  389.   is loading in the AUTOEXEC.BAT or CONFIG.SYS and, if so, try
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.   PRODUCT  :  Paradox                               NUMBER  :  1216
  405.   VERSION  :  4.0
  406.        OS  :  DOS
  407.      DATE  :  January 6, 1993                          PAGE  :  7/7
  408.  
  409.      TITLE :  Understanding and Optimizing Memory in Paradox 4.0
  410.  
  411.  
  412.  
  413.  
  414.   limiting the RAM available to it.  For the same reasons, RAM Disk
  415.   programs can also cause memory shortages for Paradox and can be
  416.   adjusted the same way if memory shortages occur.
  417.  
  418.   Memory Managers:  Paradox can run efficiently with other memory
  419.   managers.  Some of the popular ones, QEMM, 386MAX, and EMM386 are
  420.   VCPI compliant programs and as such, have a certain effect on how
  421.   Paradox behaves.  When Paradox encounters a VCPI memory manager,
  422.   it is able to gain control of the memory over which the memory
  423.   manager itself has control.  However the remaining memory, the
  424.   "unallocated extended memory" is not available to Paradox.  For
  425.   this reason, care should be given when allocating only a portion
  426.   of memory to one of these memory managers.  It might be better
  427.   for Paradox performance to allocate all or none.
  428.  
  429.   Suppose a system has eight megabytes of Extended RAM and is using
  430.   QEMM as its memory manager and is allocating two megabytes to
  431.   expanded memory with the parameter "RAM 2048".   Paradox will
  432.   only be able to use those two megabytes but the remaining six
  433.   megabytes of unallocated extended memory will be lost to Paradox.
  434.   This could severely impede Paradox performance.
  435.  
  436.   For additional information on memory related issues, please see
  437.   Chapter 23, 'Advanced Topics', in the Paradox 4.0 User's Guide.
  438.  
  439.   DISCLAIMER: You have the right to use this technical information
  440.   subject to the terms of the No-Nonsense License Statement that
  441.   you received with the Borland product to which this information
  442.   pertains.
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.